﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic;
using System.IO;
using Microsoft.SqlServer.Dts.Runtime;
using System.Text;

namespace Crosland.Automotriz.Web.SSIS
{
    public partial class wFrmCargaContabilidadSapDeudor : System.Web.UI.Page
    {
        FormatingTXTContabilidad txtConta = new FormatingTXTContabilidad();
        private static List<Struct_T_Archivo> ListaArchivo = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                ListaArchivo = new List<Struct_T_Archivo>();
             
                this.MuestraArchivosCargados();
            }

            
        }



        private void MuestraArchivosCargados()
        {
            try
            {
                ListaArchivo = new List<Struct_T_Archivo>();
                DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/Archivos Excel SSIS"));
                FileInfo[] files = dir.GetFiles("FBL5N_*.txt", SearchOption.AllDirectories);

                foreach (var fileInfo in files)
                {

                    Struct_T_Archivo x = new Struct_T_Archivo();
                    x.ID = ListaArchivo.Count() + 1;
                    x.NombreArchivo = fileInfo.Name;
                    ListaArchivo.Add(x);
                }

                grdArchivoCargados.DataSource = ListaArchivo;
                grdArchivoCargados.DataBind();

                if (ListaArchivo.Count() != 0)
                {

                    btnPreparar.Enabled = true;
                }
            }
            catch (Exception ex)
            {

                lblMensaje.Text = ex.Message;
                popupMensaje.ShowOnPageLoad = true;
            }

            


        }


        private struct Struct_T_Archivo
        {
            public int ID { get; set; }
            public String NombreArchivo { get; set; }
        }


        protected void btnDetalle_Click(object sender, EventArgs e)
        {

            this.MuestraArchivosCargados();
            pcImportarTXT.ShowOnPageLoad = false;
            
        }

        protected void btnPreparar_Click(object sender, EventArgs e)
        {

            if(grdArchivoCargados.VisibleRowCount==0){

                lblMensaje.Text = "Importar un archivo de texto para poder cargar";
                popupMensaje.ShowOnPageLoad = true;
                return;
            }

            txtConta.FormatoContabilidadDeudorTXT();
            this.EjecutarPackage();

        }


        private void EjecutarPackage()
        {

            try
            {
                string pkgLocation =@"C:\inetpub\Automotriz\Package\PKG_Actualiza_Contabilidad_FBL5N_TXT.dtsx";
                Package pkg;
                Application app;
                DTSExecResult pkgResults;
                app = new Application();
                pkg = app.LoadPackage(pkgLocation, null);
                pkgResults = pkg.Execute(null, null, null, null, null);
                if (pkgResults == DTSExecResult.Success)
                {


                    string archivoLectura = HttpContext.Current.Server.MapPath("~/Archivos Excel SSIS");
                    string[] txtList = Directory.GetFiles(archivoLectura, "FBL5N_FORMATO_*.txt");
                    foreach (string f in txtList)
                    {
                        File.Delete(f);
                    }


                    lblMensaje.Text = "Se cargó correctamente el arhivo " + DateTime.Now.ToString();
                    popupMensaje.ShowOnPageLoad = true;
                }
                else
                {
                    StringBuilder Errordescripcion = new StringBuilder();
                    foreach (DtsError er in pkg.Errors)
                    {
                        Errordescripcion.Append("Codigo: " + er.ErrorCode + " :Descripcion: " + er.Description);
                    }
                    lblMensaje.Text = Errordescripcion.ToString();
                    popupMensaje.ShowOnPageLoad = true;
                }

                this.MuestraArchivosCargados();
            }
            catch (Exception ex)
            {

                lblMensaje.Text = ex.Message;
                popupMensaje.ShowOnPageLoad = true;
            }


        }

        protected void grdArchivoCargados_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            int intIndex = grdArchivoCargados.FocusedRowIndex;
            if (intIndex == -1)
            {
                lblMensaje.Text = "Debe seleccionar un registro a eliminar.";
                popupMensaje.ShowOnPageLoad = true;
                return;
            }

            ListaArchivo.RemoveAt(intIndex);
            String NombreArchivo = grdArchivoCargados.GetRowValues(intIndex, "NombreArchivo").ToString();
            bool RutaArchivo = File.Exists(Server.MapPath("~/Archivos Excel SSIS/" + NombreArchivo));
            if (RutaArchivo)
            {
                File.Delete(Server.MapPath("~/Archivos Excel SSIS/" + NombreArchivo));
            }
            e.Cancel = true;
            grdArchivoCargados.DataSource = ListaArchivo;
            grdArchivoCargados.DataBind();


        }

        protected void grdArchivoCargados_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            grdArchivoCargados.DataSource = ListaArchivo;
            grdArchivoCargados.DataBind();
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmDefault.aspx?id=3");
        }

        protected void ASPxUploadControl1_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            string resultFilePath = "/Archivos Excel SSIS/FBL5N_ORIG_" + e.UploadedFile.FileName;
            e.UploadedFile.SaveAs(MapPath(resultFilePath));
           
        }
    }
}